import mock from '../mock'
const baseURL = process.env.BASE_API; // 请求的接口域名
const service = function (config) {
    return new Promise((resolve, reject) => {
        // https 请求成功
        const success = res => {
            const resData = res.data; //接口数据
            console.log("resData:" + resData);
            if (res.statusCode != 200) {
                // 结束文件流
                reject(res)
            }
            resolve(resData);
            switch (resData.errCode) {
                case "00":
                    // 请求成功
                    resolve(resData.data)
                    break;
                // 其他错误码
                default:
                    reject(resData.errMsg)
                    break;
            }
        };
        const fail = res => {
            let errMsg = "";
            switch (res.statusCode) {
                case 400:
                    errMsg = '请求错误';
                    break;
                case 401:
                    errMsg = '未授权，请登录';
                    break;
                case 403:
                    errMsg = '拒绝访问';
                    break;
                case 404:
                    errMsg = `请求地址出错: ${config.url}`;
                    break;
                case 408:
                    errMsg = '请求超时';
                    break;
                case 500:
                    errMsg = '服务器内部错误';
                    break;
                case 501:
                    errMsg = '服务未实现';
                    break;
                case 502:
                    errMsg = '网关错误';
                    break;
                case 503:
                    errMsg = '服务不可用';
                    break;
                case 504:
                    errMsg = '网关超时';
                    break;
                case 505:
                    errMsg = 'HTTP版本不受支持';
                    break;
                default:
                    break;
            };
            wx.showToast({ // 请求失败的ui
                title: errMsg,
                icon: "none"
            });
            console.error("请求失败" + errMsg);
            reject(errMsg);
        };
        // 发起网络请求
        const toRequest = () => {
            config.url = baseURL + config.url; //接口域名
            config.success = success; //成功
            config.fail = fail; // 失败
            // 补全公共参数
            // 进行参数加密组装
            wx.request(config);
        };
        const openMock = false; // 是否切换到mock
        // 判断当前环境
        if (openMock && process.env.NODE_ENV === "development") {
            mock.response(config).then(mockRes => {
                success(mockRes);
                console.log("mock请求成功")
            }).catch(err => {
                console.log("mock请求失败" + err);
                toRequest();
            })
        } else {
            // mock失败，正式发起请求
            toRequest()
        }
    })
}
export default service